package com.zenithmind.mall.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zenithmind.mall.pojo.dto.UserAddressDTO;
import com.zenithmind.mall.pojo.entity.UserAddress;
import com.zenithmind.mall.pojo.vo.UserAddressVO;

import java.util.List;

/**
 * 用户地址服务接口
 * 
 * @author ZenithMind Team
 * @since 2025-06-09
 */
public interface UserAddressService extends IService<UserAddress> {

    /**
     * 获取用户地址列表
     * 
     * @param userId 用户ID
     * @return 地址列表
     */
    List<UserAddressVO> getUserAddressList(String userId);

    /**
     * 获取用户默认地址
     * 
     * @param userId 用户ID
     * @return 默认地址
     */
    UserAddressVO getDefaultAddress(String userId);

    /**
     * 根据ID获取地址详情
     * 
     * @param id 地址ID
     * @param userId 用户ID
     * @return 地址详情
     */
    UserAddressVO getAddressById(String id, String userId);

    /**
     * 创建地址
     * 
     * @param addressDTO 地址DTO
     * @param userId 用户ID
     * @return 地址ID
     */
    String createAddress(UserAddressDTO addressDTO, String userId);

    /**
     * 更新地址
     * 
     * @param id 地址ID
     * @param addressDTO 地址DTO
     * @param userId 用户ID
     * @return 是否成功
     */
    Boolean updateAddress(String id, UserAddressDTO addressDTO, String userId);

    /**
     * 删除地址
     * 
     * @param id 地址ID
     * @param userId 用户ID
     * @return 是否成功
     */
    Boolean deleteAddress(String id, String userId);

    /**
     * 设置默认地址
     * 
     * @param id 地址ID
     * @param userId 用户ID
     * @return 是否成功
     */
    Boolean setDefaultAddress(String id, String userId);

    /**
     * 批量删除地址
     * 
     * @param ids 地址ID列表
     * @param userId 用户ID
     * @return 是否成功
     */
    Boolean deleteAddressesBatch(List<String> ids, String userId);
}
